home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-19 / l2c-19.exe / L2C.H < prev    next >
C/C++ Source or Header  |  1993-06-25  |  12KB  |  372 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5. #include <malloc.h>
  6. #include <stdarg.h>
  7. #include "adslib.h"
  8. #include "adsdlg.h"
  9. //
  10. //
  11. #undef X
  12. #undef Y
  13. #undef Z
  14. #undef T
  15. #define SymExp MemoryCell *
  16. #define Dummy MemoryCell *
  17. #define StrExp char *
  18.  
  19. //
  20. typedef enum {
  21.     False,
  22.     True
  23. } Boolean;
  24.  
  25. typedef enum {
  26.     cCons,
  27.     cNumber,
  28.     cReal,
  29.     cString,
  30.     cSymbol,
  31.     cFunction,
  32.     cOpen,
  33.     cClose,
  34.     cDot,
  35.     cFile,
  36.     cSubr,
  37.     cExSubr,
  38.     cPickSet,
  39.     cEName,
  40.     cUnknown,
  41.     cReserved
  42. } CellTypes;
  43.  
  44.  
  45. typedef struct MemoryCell {
  46.     struct {
  47.         unsigned ID     :  4;
  48.         unsigned Mark   :  1;
  49.         unsigned Point2 :  9;
  50.         unsigned Usable :  1;
  51.     } Flag;
  52.     struct SymExp Next;
  53.     struct SymExp Prev;
  54.     CellTypes CellType;
  55.     union {
  56.         struct {
  57.             StrExp Name;
  58.         } Symbol;
  59.         long   IntValue;
  60.         ads_real RealValue;
  61.         StrExp StrValue;
  62.         struct {
  63.             struct SymExp Car;
  64.             struct SymExp Cdr;
  65.         } Cons;
  66.         struct {
  67.             int    ArgC;
  68.             struct SymExp (*Func)();
  69.         } Func;
  70.         FILE *File;
  71.         ads_name EName;
  72.         ads_name PickSet;
  73.     } Cell;
  74. } MemoryCell;
  75. //
  76. //
  77. typedef struct SelectionSetList {
  78.     ads_name    SelectionSet;
  79.     int         Flag;
  80.     struct SelectionSetList *Next;
  81. } SelectionSetList;
  82. //
  83. typedef struct FileList {
  84.     FILE    *File;
  85.     int     Flag;
  86.     struct FileList *Next;
  87. } FileList;
  88. //
  89. //
  90. //░░▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒░░
  91. //
  92. #define MaxSymbol 2003
  93. #define HStep 13
  94.  
  95. typedef struct HashList {
  96.     SymExp  Value;
  97.     Boolean Repr;
  98.     struct  HashList *Next;
  99. } HashList_;
  100.  
  101. typedef struct {
  102.     StrExp  Name;
  103.     struct  HashList *Top;
  104.     Boolean Local;
  105. } HashTable;
  106.  
  107. #define ClearError ERROR = False
  108. #define ErrorTest if (ERROR) return (NULL)
  109. Boolean GetBoolean (SymExp);
  110. Boolean IsFunction (SymExp);
  111. Boolean IsPoint (SymExp);
  112. FILE *GetFile (SymExp);
  113. StrExp GetName (SymExp);
  114. StrExp GetString (SymExp);
  115. SymExp (*GetFunction ())();
  116. SymExp ADS_Acad_colordlg (SymExp, SymExp, ...);
  117. SymExp ADS_Acad_helpdlg (SymExp, SymExp, ...);
  118. SymExp ADS_Acad_strsort (SymExp, SymExp);
  119. SymExp ADS_Action_tile (SymExp, SymExp,...);
  120. SymExp ADS_Add_list (SymExp,...);
  121. SymExp ADS_Ads (SymExp);
  122. SymExp ADS_Alert (SymExp, SymExp);
  123. SymExp ADS_Angle (SymExp, SymExp, SymExp);
  124. SymExp ADS_Angtof (SymExp, SymExp,...);
  125. SymExp ADS_Angtos (SymExp, SymExp,...);
  126. SymExp ADS_Client_data_tile (SymExp, SymExp, ...);
  127. SymExp ADS_Command (SymExp,...);
  128. SymExp ADS_Cvunit (SymExp, SymExp, SymExp, SymExp);
  129. SymExp ADS_Dimx_tile (SymExp, ...);
  130. SymExp ADS_Dimy_tile (SymExp, ...);
  131. SymExp ADS_Distance (SymExp, SymExp, SymExp);
  132. SymExp ADS_Distof (SymExp,...);
  133. SymExp ADS_Done_dialog (SymExp,...);
  134. SymExp ADS_End_image (SymExp);
  135. SymExp ADS_End_list (SymExp);
  136. SymExp ADS_Entdel  (SymExp,...);
  137. SymExp ADS_Entget  (SymExp, SymExp, ...);
  138. SymExp ADS_Entlast (SymExp);
  139. SymExp ADS_Entmake (SymExp,...);
  140. SymExp ADS_Entmod  (SymExp,...);
  141. SymExp ADS_Entnext (SymExp,...);
  142. SymExp ADS_Entsel  (SymExp,...);
  143. SymExp ADS_Entupd  (SymExp,...);
  144. SymExp ADS_Fill_image (SymExp, SymExp, SymExp, SymExp, SymExp, ...);
  145. SymExp ADS_Findfile (SymExp, SymExp);
  146. SymExp ADS_Get_attr (SymExp, SymExp,...);
  147. SymExp ADS_Get_tile (SymExp,...);
  148. SymExp ADS_Getangle (SymExp,...);
  149. SymExp ADS_Getcorner (SymExp, SymExp,...);
  150. SymExp ADS_Getdist (SymExp,...);
  151. SymExp ADS_Getfiled (SymExp, SymExp, SymExp, SymExp, SymExp);
  152. SymExp ADS_Getint (SymExp,...);
  153. SymExp ADS_Getkword (SymExp,...);
  154. SymExp ADS_Getorient (SymExp,...);
  155. SymExp ADS_Getpoint (SymExp,...);
  156. SymExp ADS_Getreal (SymExp,...);
  157. SymExp ADS_Getstring (SymExp,...);
  158. SymExp ADS_Getvar (SymExp,...);
  159. SymExp ADS_Graphscr (SymExp);
  160. SymExp ADS_Grclear (SymExp);
  161. SymExp ADS_Grdraw (SymExp, SymExp, SymExp, SymExp, ...);
  162. SymExp ADS_Grread (SymExp, ...);
  163. SymExp ADS_Grtext (SymExp, ...);
  164. SymExp ADS_Grvecs (SymExp, SymExp, ...);
  165. SymExp ADS_Handent (SymExp, SymExp);
  166. SymExp ADS_Initget (SymExp,...);
  167. SymExp ADS_Inters (SymExp, SymExp, SymExp, SymExp, SymExp, ...);
  168. SymExp ADS_Load_dialog (SymExp,...);
  169. SymExp ADS_Menucmd (SymExp, SymExp);
  170. SymExp ADS_Mode_tile (SymExp, SymExp,...);
  171. SymExp ADS_Nentsel (SymExp, ...);
  172. SymExp ADS_Nentselp (SymExp, ...);
  173. SymExp ADS_New_dialog (SymExp, SymExp, SymExp,...);
  174. SymExp ADS_Osnap (SymExp, SymExp, SymExp);
  175. SymExp ADS_Polar (SymExp, SymExp, SymExp, SymExp);
  176. SymExp ADS_Prompt (SymExp, SymExp);
  177. SymExp ADS_Redraw (SymExp, ...);
  178. SymExp ADS_Regapp (SymExp, SymExp);
  179. SymExp ADS_Rtos (SymExp, SymExp,...);
  180. SymExp ADS_Set_tile (SymExp, SymExp,...);
  181. SymExp ADS_Setvar (SymExp, SymExp, SymExp);
  182. SymExp ADS_Slide_image (SymExp, SymExp, SymExp, SymExp, SymExp, ...);
  183. SymExp ADS_Ssadd (SymExp,...);
  184. SymExp ADS_Ssdel (SymExp, SymExp, SymExp);
  185. SymExp ADS_Ssget (SymExp,...);
  186. SymExp ADS_Sslength (SymExp, SymExp);
  187. SymExp ADS_Ssmemb (SymExp, SymExp, SymExp);
  188. SymExp ADS_Ssname (SymExp, SymExp, SymExp);
  189. SymExp ADS_Start_dialog (SymExp);
  190. SymExp ADS_Start_image (SymExp, ...);
  191. SymExp ADS_Start_list (SymExp, SymExp,...);
  192. SymExp ADS_Tablet (SymExp, SymExp, ...);
  193. SymExp ADS_Tblnext (SymExp, SymExp, ...);
  194. SymExp ADS_Tblsearch (SymExp, SymExp, SymExp, ...);
  195. SymExp ADS_Term_dialog (SymExp);
  196. SymExp ADS_Textbox (SymExp, SymExp);
  197. SymExp ADS_Textscr (SymExp);
  198. SymExp ADS_Trans (SymExp, SymExp, SymExp, SymExp, ...);
  199. SymExp ADS_Unload_dialog (SymExp,...);
  200. SymExp ADS_Vector_image (SymExp, SymExp, SymExp, SymExp, SymExp, ...);
  201. SymExp ADS_Vports (SymExp);
  202. SymExp ADS_Wcmatch (SymExp, SymExp,...);
  203. SymExp ADS_Xdroom (SymExp, ...);
  204. SymExp ADS_Xdsize (SymExp, ...);
  205. SymExp ADS_Xload (SymExp, SymExp,...);
  206. SymExp ADS_Xunload (SymExp, SymExp,...);
  207. SymExp Copy (SymExp);
  208. SymExp GetLocal (HashTable [], int);
  209. SymExp GetSymbol (HashTable [], StrExp);
  210. SymExp LSP_Abs (SymExp, Dummy);
  211. SymExp LSP_Alloc (SymExp, Dummy);
  212. SymExp LSP_And (SymExp, ...);
  213. SymExp LSP_Append (SymExp, ...);
  214. SymExp LSP_Ascii (SymExp, Dummy);
  215. SymExp LSP_Assoc (SymExp, SymExp, Dummy);
  216. SymExp LSP_Atan (SymExp,...);
  217. SymExp LSP_Atof (SymExp, Dummy);
  218. SymExp LSP_Atoi (SymExp, Dummy);
  219. SymExp LSP_Atom (SymExp, Dummy);
  220. SymExp LSP_AtomsFamily (SymExp, SymExp, ...);
  221. SymExp LSP_BitNot (SymExp, Dummy);
  222. SymExp LSP_Boole (SymExp, SymExp, SymExp,...);
  223. SymExp LSP_Boundp (SymExp, Dummy);
  224. SymExp LSP_C_r (SymExp, StrExp, Dummy);
  225. SymExp LSP_Car (SymExp, Dummy);
  226. SymExp LSP_Cdr (SymExp, Dummy);
  227. SymExp LSP_Chr (SymExp, Dummy);
  228. SymExp LSP_Close (SymExp, SymExp);
  229. SymExp LSP_Cons (SymExp, SymExp, Dummy);
  230. SymExp LSP_Cos (SymExp, Dummy);
  231. SymExp LSP_Divide (SymExp,...);
  232. SymExp LSP_Eq (SymExp, SymExp, SymExp);
  233. SymExp LSP_Equal (SymExp, SymExp, SymExp,...);
  234. SymExp LSP_Eval (SymExp, SymExp);
  235. SymExp LSP_Exit (Dummy);
  236. SymExp LSP_Exp (SymExp, SymExp);
  237. SymExp LSP_Expand (SymExp, Dummy);
  238. SymExp LSP_Expt (SymExp, SymExp, SymExp);
  239. SymExp LSP_Fix (SymExp, Dummy);
  240. SymExp LSP_Float (SymExp, Dummy);
  241. SymExp LSP_Gc (Dummy);
  242. SymExp LSP_Gcd (SymExp, SymExp, Dummy);
  243. SymExp LSP_Getenv (SymExp,...);
  244. SymExp LSP_Invoke (StrExp, SymExp, ...);
  245. SymExp LSP_Itoa (SymExp, Dummy);
  246. SymExp LSP_Last (SymExp, Dummy);
  247. SymExp LSP_Length (SymExp, Dummy);
  248. SymExp LSP_LessEqual (SymExp, SymExp, ...);
  249. SymExp LSP_LessThan (SymExp, SymExp, ...);
  250. SymExp LSP_List (SymExp,...);
  251. SymExp LSP_Listp (SymExp, Dummy);
  252. SymExp LSP_Load (SymExp, SymExp, ...);
  253. SymExp LSP_Log (SymExp, SymExp);
  254. SymExp LSP_Logand (SymExp, SymExp, ...);
  255. SymExp LSP_Logior (SymExp, SymExp, ...);
  256. SymExp LSP_Lsh (SymExp, SymExp, Dummy);
  257. SymExp LSP_Max (SymExp,...);
  258. SymExp LSP_Mem (SymExp,...);
  259. SymExp LSP_Member (SymExp, SymExp, Dummy);
  260. SymExp LSP_Min (SymExp,...);
  261. SymExp LSP_Minus (SymExp,...);
  262. SymExp LSP_Minusp (SymExp, Dummy);
  263. SymExp LSP_MoreEqual (SymExp, SymExp, ...);
  264. SymExp LSP_MoreThan (SymExp, SymExp, ...);
  265. SymExp LSP_Not (SymExp, Dummy);
  266. SymExp LSP_Nth (SymExp, SymExp, Dummy);
  267. SymExp LSP_Null (SymExp, Dummy);
  268. SymExp LSP_NumEq (SymExp, SymExp, ...);
  269. SymExp LSP_NumNotEq (SymExp, SymExp, ...);
  270. SymExp LSP_Numberp (SymExp, Dummy);
  271. SymExp LSP_OneMinus (SymExp, Dummy);
  272. SymExp LSP_OnePlus (SymExp, Dummy);
  273. SymExp LSP_Open  (SymExp, SymExp, SymExp);
  274. SymExp LSP_Or (SymExp, ...);
  275. SymExp LSP_Plus (SymExp,...);
  276. SymExp LSP_Prin1 (SymExp, ...);
  277. SymExp LSP_Princ (SymExp, ...);
  278. SymExp LSP_Print (SymExp, ...);
  279. SymExp LSP_Quit (Dummy);
  280. SymExp LSP_Read (SymExp, Dummy);
  281. SymExp LSP_ReadChar (SymExp, ...);
  282. SymExp LSP_ReadLine (SymExp, ...);
  283. SymExp LSP_Rem (SymExp, SymExp, ...);
  284. SymExp LSP_Reverse (SymExp, SymExp);
  285. SymExp LSP_Sin (SymExp, Dummy);
  286. SymExp LSP_Sqrt (SymExp, SymExp);
  287. SymExp LSP_StrCase (SymExp ,...);
  288. SymExp LSP_StrCat (SymExp, ...);
  289. SymExp LSP_StrLen (SymExp, ...);
  290. SymExp LSP_SubStr (SymExp, SymExp, ...);
  291. SymExp LSP_Subst (SymExp, SymExp, SymExp, Dummy);
  292. SymExp LSP_Terpri (Dummy);
  293. SymExp LSP_Times (SymExp,...);
  294. SymExp LSP_Trace (SymExp, ...);
  295. SymExp LSP_Type (SymExp, Dummy);
  296. SymExp LSP_Untrace (SymExp, ...);
  297. SymExp LSP_Ver (Dummy);
  298. SymExp LSP_Vmon (Dummy);
  299. SymExp LSP_WriteChar (SymExp, ...);
  300. SymExp LSP_WriteLine (SymExp, ...);
  301. SymExp LSP_Zerop (SymExp, Dummy);
  302. SymExp MakeEName (ads_name);
  303. SymExp MakeFile (FILE *);
  304. SymExp MakeFunction (SymExp (*F)(), int);
  305. SymExp MakeMatrix (ads_matrix);
  306. SymExp MakeMem (CellTypes, int);
  307. SymExp MakeNumber (long);
  308. SymExp MakePickSet (ads_name);
  309. SymExp MakePoint (ads_point);
  310. SymExp MakeReal (ads_real);
  311. SymExp MakeString (StrExp);
  312. SymExp MakeSymbol (StrExp);
  313. SymExp rb2Sym (struct resbuf **);
  314. ads_real GetReal (SymExp);
  315. int HIndex (HashTable [], StrExp);
  316. int InsGlobal (HashTable [], StrExp, SymExp);
  317. int InsLocal (HashTable [], StrExp, SymExp);
  318. int returnADS (SymExp);
  319. long GetNumber (SymExp);
  320. void DelLocal (HashTable [], int);
  321. void GetEName (SymExp, ads_name);
  322. void GetMatrix (SymExp, ads_matrix);
  323. void GetPickSet (SymExp, ads_name);
  324. void GetPoint (SymExp, ads_point);
  325. void InsTmpLocal (HashTable [], int);
  326. void InsertStack (SymExp S[], int);
  327. void KillMem (void);
  328. void Lisp2C_Exit ();
  329. void Lisp2C_Init (int, char *[]);
  330. void MarkGlobal (HashTable [], int);
  331. void PopObjList (void);
  332. void PrintTable (HashTable []);
  333. void PushObjList (void);
  334. void PutLocal (HashTable [], int, SymExp);
  335. void PutSymbol (HashTable [], StrExp, SymExp);
  336. void RemoveStack ();
  337. void WriteError (StrExp);
  338. void check_resbuf (struct resbuf **);
  339. void BREAKPT (int, int);
  340. void debugENTER (StrExp);
  341. void debugEXIT ();
  342. void debugRESULT (SymExp);
  343. //
  344. // Error messages -----------------------------------------------------------
  345. //
  346. #define errBadArgType      "Bad argument value."
  347. #define errBadComment      "Bad inline comment."
  348. #define errBadDotPair      "Bad dotted pair."
  349. #define errBadMemory       "Bad memory type."
  350. #define errHashFull        "Hash table full."
  351. #define errIlegalValue     "Ilegal value."
  352. #define errIncorrArgs      "Incorrect number of arguments to a function."
  353. #define errLoadFailed      "Load failed."
  354. #define errNilFunction     "NIL function."
  355. #define errNoMemory        "Cannot allocate memory."
  356. #define errNotSymbol       "Not a symbol."
  357. #define errParentheses     "Unbalanced parentheses in read."
  358. #define errQuitExit        "Quit/Exit abort."
  359. #define errTooManyArgs     "Eval can only handle < 32 args in user functions."
  360. #define errUserBreak       "User break."
  361. #define errXload           "Xload failed."
  362. #define errXunload         "Xunload failed."
  363.  
  364. #define warnBadValue       "Cannot access symbol."
  365. //
  366. //
  367. //░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  368. //░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░
  369. //░░▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒░░
  370. //░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░
  371. //░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  372.